import math

#---------------------------------------
#-------------		Reta		-------------
class Reta:	
	def __init__(self,a,b):
		self.a = a
		self.b = b
		
	def getCoeficiente(self):
		return self.a
		
	def parYpara(self,x):
		return self.a*x + self.b
		
	def parXpara(self, y):
		return (y - self.b)/self.a
		
	def pertence(self,x,y):
		if y == parYpara(x):
			return True
		else:
			return False
			
	def pontoCruzCom(self,reta):
		try:
			x = (reta.b - self.b) / (self.a - reta.a)
			y = self.parYpara(x)
			return Ponto(x,y)
		except:
			return Ponto(-1,-1)
#---------------------------------------
#-------------		Ponto		-------------	
class Ponto:
	def __init__(self,x,y):
		self.x = x
		self.y = y
		
	def distanciaDe(self,x,y):
		return math.sqrt( (self.x-x)**2 + (self.y-y)**2 )
		
	def distanciaDe(self,ponto2):
		return math.sqrt( (self.x-ponto2.x)**2 + (self.y-ponto2.y)**2 )
		
	def norma(self):
		return math.sqrt( self.x**2 + self.y**2 )
		
#------------------------------------------------
#-------------		Circunferencia		-------------	
class Circunferencia:
	def __init__(self,centro,r):
		self.a = centro.x
		self.b = centro.y
		self.r = r
		
	def relacao(self,ponto):
		comp = (ponto.x-self.a)**2 + (ponto.y-self.b)**2 - self.r**2
		if comp == 0:
			return 'pertencente'
		elif comp < 0:
			return 'interior'
		else:
			return 'exterior'
			
	def pertencente(self,ponto):
		if self.relacao(ponto) == 'pertencente':
			return True
		else:
			return False

#------------------------------------------
#-------------		Retangulo		----------
class Retangulo:
	def __init__(self,ponto1,ponto2):
		self.ponto1 = ponto1
		self.ponto2 = ponto2
	
	def area(self):
		return math.fabs( (self.ponto2.x-self.ponto1.x)*(self.ponto2.y-self.ponto1.y) )
		
	def perimetro(self):
		return 2*math.fabs(self.ponto2.x-self.ponto1.x) + 2*math.fabs(self.ponto2.y-self.ponto1.y)
		
	def centroMassa(self):
		x = (self.ponto2.x +	self.ponto1.x) / 2
		y = (self.ponto2.y + self.ponto1.y) / 2	
		return Ponto(x,y)
#---------------------------------------
#-------------		TESTER		----------
if __name__ == '__main__':
	p1 = Ponto(2,0)
	p2 = Ponto(5,0)

	print p1.distanciaDe(p2)
